考題日期:2017/09/26
題號:11743
星等:1
語言:C++
題目:
題意:
今日,用信用卡網路購物已經變得相當普遍,由於使用者可能打錯信用卡號,所以一般電子商務型網站都會對信用卡號作檢查。
其中一種錯誤檢查機制稱為Luhn algorithm,它可以把所有打錯一個位數的錯誤找出來,甚至於能挑出打錯多個位數的錯誤,它的檢查規則如下:
用一個例子來講解會比較方便,例如信用卡號( 5181 2710 9900 0012 ):
程式:
#include <iostream>
using namespace std;
int main()
{
int test;
cin>>test;
while(test--)
{
int key[4],odd = 0,even = 0;
for(int i = 0 ; i < 4 ; i++)
{
cin>>key[i];
int k = 1;
while(key[i]!=0)
{
if(k % 2 == 0)
{
int a = (key[i] % 10) * 2;
while(a>0)
{
even += a % 10;
a /= 10;
}
}
else
{
odd += key[i] % 10;
}
key[i] /= 10;
k++;
}
}
if((even + odd) % 10 == 0)
cout<<"Valid"<<endl;
else
cout<<"Invalid"<<endl;
}
return 0;
}
測資: